//integer:带符号整形（最多64位）
//real:8字节浮点
//text:字符，无大小限制
//bolb:任意类型，无大小限制
//null:空值
//! sqlite3 *.db    创建或打开*.db文件
//! .quit或.exit    退出数据库
//create table 表名称 (列名称 数据类型,……);    创建表
//primary key 主键，每个表只能有一个，其列数据不可重复
//.tables 查看表
//.schema 查看表结构
//alter table 表名 add 列名 数据类型;    添加新列
//alter table 表名 rename to 新表名;    修改表名
//drop table 表名称;    删除表
//insert into 表名 values (列值……);    插入新行并赋值，字符串加‘’号
//insert into 表名 (列名……) values (列值……);    插入新行部分赋值
//update 表名 set 列……=值…… 匹配条件;    修改where匹配行的列值，空匹配所有
//delete from 表名 匹配条件;    删除匹配行
//select * from 表名 匹配条件;
//select 列名…… from 表名 匹配条件;    从表中选取数据
//.mode colum 左对齐列
//.headers on 列名显示
//where 列名 in (列值……)    在where子句中规定多个值
//where 列1=值1 and 列2=值2 and ...    多个条件与
//where 列1=值1 or 列2=值2 or ...    多个条件或
//where 列名 between A and B    选取A、B之间的数据范围
//where 列名 like 列值    数字相当于“=”，字符串可用“%”通配
//where 列名 not in/between/like ...
//where not 列1=值1 and/or 列2=值2 and/or ...    原结果集补集
//order by 列名 (desc)    根据指定列对结果集排序，用dest降序
//begin;    开始一个事务
//commit;    确认begin后的全部命令
//rollback;    取消begin后的所有操作
int sqlite3_open(char *db_name,sqlite3 **db);    //打开数据库，成功返回SQLITE_OK
int sqlite3_close(sqlite3 *db);    //关闭数据库，成功返回SQLITE_OK，链接时添加 -lpthread 和 -ldl两个库
int sqlite3_exec(sqlite3 *db,const char *sql,exechandler_t callback,void *arg,char **errmsg);    //执行sql语句，若结果集不空，回调下面callback
typedef int (*exechandler_t)(void *para,int n_column,char **column_value,char **column_name);
int sqlite3_get_table(sqlite3 *db,const char *sql,char ***resultp,int *nrow,int *ncolumn,char **errmsg);    //执行sql语句，结果集保存在resultp中
void sqlite3_free_table(char **resultp);    //释放sqlite3_get_table分配的内存
//函数
//length()    返回字符串长度
//lower()    将字符串转换为小写
//upper()    将字符串转换为大写
//select 函数名(列名) from 表名;
//聚集函数
//avg()    返回某列的平均值
//count()    返回某列的行数
//max()    返回某列的最大值
//min()    返回某列的最小值
//sum()    返回某列值之和
//select 列名…… from 表名 group by 列名;    根据某一属性重新分组，出现在where子句之后
//select 函数名 (列名) …… from 表名 group by 列名 having 函数名 (列名) 限制值;    查看满足having条件的分组
//主键惟一标识一行，对用户无意义，常用语索引，勿更新，无动态变化数据，由计算机自动生成
//unique 用法同主键，保证一个列中数据惟一，可以有多个，可以修改和更新
//create table 表名 (列名 数据类型 check (判断语句));    保证某列数据满足一定条件
//select 列名…… from 表…… where 判断语句;    用“.”分隔表名和列名
//create view 视图名 as 语句;    创建视图
//drop view 视图名;    删除视图
//create trigger 触发器名 before/after insert/update/delete on 表名
//begin 语句; end;
//datetime('now')    获取当前系统时间
//.tables    查看触发器
//drop trigger 触发器名;    删除触发器
//create index 索引名 on 表名(列名);    //创建索引
//.indices    查看索引
//drop index 索引名；    删除索引

